package com.graduation.springbootinit.service;

import com.graduation.springbootinit.common.BaseResponse;
import com.graduation.springbootinit.model.entity.ShopPart.ShoppingCartItem;
import com.graduation.springbootinit.model.vo.ShoppingCartItemVO;
import com.graduation.springbootinit.model.vo.StoreCartGroupVO;
import java.util.List;

public interface ShoppingCartService {
    
    /**
     * 添加商品到购物车
     */
    BaseResponse<Boolean> addToCart(Long userId, ShoppingCartItem cartItem);
    
    /**
     * 更新购物车商品数量
     */
    BaseResponse<Boolean> updateQuantity(Long userId, ShoppingCartItem cartItem);
    
    /**
     * 从购物车移除商品
     */
    BaseResponse<Boolean> removeFromCart(Long userId, ShoppingCartItem cartItem);
    
    /**
     * 获取用户购物车商品列表
     */
    BaseResponse<List<ShoppingCartItemVO>> listUserCartItems(Long userId);
    
    /**
     * 更新商品选中状态
     */
    BaseResponse<Boolean> updateSelected(Long userId, ShoppingCartItem cartItem);
    
    /**
     * 根据ID列表获取购物车项
     */
    List<ShoppingCartItemVO> getCartItemsByIds(List<Long> cartItemIds);
    
    /**
     * 批量删除购物车项
     */
    void removeByIds(List<Long> cartItemIds);
    
    /**
     * 获取购物车中已选中的商品列表
     */
    List<ShoppingCartItemVO> getSelectedItems(Long cartId);


   Long getCartId   (Long userId);

    /**
     * 获取按商户分组的购物车商品列表
     * @param userId 用户ID
     * @return 按商户分组的购物车商品列表
     */
    BaseResponse<List<StoreCartGroupVO>> listUserCartItemsByStore(Long userId);
} 